var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        if (typeof b !== "function" && b !== null)
            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
// 定义一个数值和字符串的联合类型
var a = 100;
var b = '100';
console.log(a, b);
// 定义一个类型断言
var someValue = '2222';
var c = someValue.length;
console.log(c);
// 定义一个 void 实现函数的无返回值
function foo(one, two) {
    console.log(one + two);
}
// 定义一个 never 的函数
function never(x, y) {
    return x + y;
}
// 分别定义 es5 和 ts 的函数定义
function foo1() { } //es5
var foo2 = function () { }; //ts
// 定义函数时， 分别实现参数类型、剩余参数、默认参数
// 参数类型
function foo3(xs, ys) {
    return xs + ys;
}
// 剩余参数
function foo4(a) {
    var args = [];
    for (var _i = 1; _i < arguments.length; _i++) {
        args[_i - 1] = arguments[_i];
    }
    console.log(a);
    console.log(args);
}
foo4(1, 2, 3, 4, 5);
// 默认参数
function foo5(name, age) {
    if (age === void 0) { age = 15; }
    console.log(name, age);
}
foo5('1234');
function foo6(name1, age1) {
    return name1 + age1;
}
foo6(20, 76);
// 使用 es5 的方式定义一个类和es6中定义类
// es6中定义类\
var Person1 = /** @class */ (function () {
    function Person1(name, age) {
        this.name = name;
        this.age = age;
    }
    return Person1;
}());
// 在 ts 中定义一个类并实现继承（
var Stu = /** @class */ (function (_super) {
    __extends(Stu, _super);
    function Stu(name, age) {
        return _super.call(this, name, age) || this;
    }
    return Stu;
}(Person1));
var p1 = new Person1('111', 222);
console.log(p1);
var p2 = new Stu('111', 6666);
console.log(p2);
// 2种方式定义一个数组（数组中的元素可以是任意类型）
var d = [1, true, 'hah'];
console.log(d);
var f = [1, 2, 6, 8];
console.log(f);
// Ts定义一个求和函数;例Add(2,8,9,6,5,8,7),返回结果45
function fun1(Add) {
    var as = Add.reduce(function (a, b) {
        return a + b;
    }, 0);
    return as;
}
console.log(fun1([2, 8, 9, 6, 5, 8, 7]));
// Ts定义一个函数返回值为boolean类型的判断函数;例isTrue(nudefined),返回false
function isTrue(a) {
    if (Boolean(a) == false) {
        return false;
    }
    else {
        return true;
    }
}
console.log(isTrue(undefined));
// 计数：
function fun2(a, b) {
    var num = 0;
    (a.split('')).forEach(function (item, index) {
        if (item === b) {
            num++;
        }
    });
    return num;
}
console.log(fun2("acdkjcdeicl", 'c'));
// 数字（乘5）添加：
// var arrs= ['a','c',6,'e',5,3,'d']
function fun(arrs) {
    var sun = [];
    for (var i = 0; i < arrs.length; i++) {
        if (isNaN(arrs[i]) == false) {
            sun.push(arrs[i] * 5);
        }
    }
    return sun;
}
console.log(fun(['a', 'c', 6, 'e', 5, 3, 'd']));
// 写一个函数bouncer（），实现将数组中的真值，添加到一个新数组中。   
function bouncer(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (Boolean(arr[i]) == true) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
console.log(bouncer([7, 'ate', '', false, 9]));
// 补零：
// var arrss=[2,5,6,10];
function fun3(arr1) {
    var newArr = [];
    arr1.forEach(function (item) {
        if (item < "10") {
            newArr.push(("0" + item));
        }
        else {
            newArr.push(item);
        }
    });
    return newArr;
}
console.log(fun3(["2", "3", "20", "4"]));
